<?php
class AuthController extends Zend_Controller_Action {
	
	public function loginAction() {
		
		$this->view->headScript()->appendFile ( '/js/jquery.js' );
		$this->view->headScript()->appendFile ( '/js/form-desc.js' );
		$this->view->headLink ()->appendStylesheet ( '/css/form.css' );
		
		$form = $this->_manageFormLogin ();
		
		$this->view->formLogin = $form;
		
		$this->_helper->layout->setLayout('login');
		
	}
	
	public function logoutAction()
	{
		Zend_Session::start(); //obligatoire pour que ça marche !
		//détruit les données de session coté serveur :
		Zend_Session::destroy();
		$this->_redirect('/');
	}
	
	
	protected function _manageFormLogin() {
		$form = new Form_Login();
		$form->setAction( $this->_request->getRequestUri() );
		
		if ($this->_request->isPost() && $this->_request->getPost( 'cible' ) == 'login') {

			if ($form->isValid( $this->_request->getPost() )) {
				
				$authAdapter = $form->username->getValidator( 'LoginPasswordOk' )->getAuthAdapter();
				
				// récupère les informations du compte pour les mettre dans le
				// cookie :
				$data = $authAdapter->getResultRowObject ( null, 				// whitelist
					array (
							'password'
					) )				// blacklist
					;
				
				$formValues = $form->getValues();
				if ($formValues ['remember_me']) {
					$sessionLifetime = 121536000; // 4 ans environ
					                              
					// reglage du lifetime dans le cookie :
					Zend_Session::rememberMe ( $sessionLifetime );
					
					// reglage du lifetime dans les données de session
					Zend_Session::getSaveHandler()->setLifetime( $sessionLifetime, true );
				} else {
					// reglage du lifetime dans le cookie :
					Zend_Session::forgetMe(); // cookie de session
					                          
					// reglage du lifetime dans les données de session
					Zend_Session::getSaveHandler()->setLifetime( 86400, true ); // 24 heures
				}
				
				// écriture dans les données de session :
				$auth = Zend_Auth::getInstance ();
				$auth->setStorage(new Zend_Auth_Storage_Session( 'User'));
				$auth->getStorage()->write( $data );
				
	
				
			
				// redirection :
				$redirectNamespace = new Zend_Session_Namespace( 'redirect' );
				$redirectUrl = $redirectNamespace->redirectUrl;
				
				if ($redirectUrl) {
					$redirectNamespace->redirectUrl = '/'; // on ne fait la
					                                       // redirection qu'une fois
					$this->_redirect( $redirectUrl );
				} else {
					$this->_redirect( '/' );
				}
			} else {
				
				// //fin de validation du compte mci
				$message = 'erreur dans le login ou mot de passe';
				//$this->_helper->messageNow( $message );
			}
		}
		return $form;
	}
}
    
